// observable用于创建仓库，actions函数用于定义方法
import { observable, action } from 'mobx-miniprogram'
import { getStorage } from '../utils/storage'
import { reqLogin, reqUserInfo } from '../api/user'
import { setStorage } from '../utils/storage'
export const userStore = observable({
  // 定义响应式数据
  // 存储token
  token: getStorage('token') || '',
  // 存储用户信息
  userInfo: getStorage('userInfo') || {},
  // 定义方法
  // 获取token并存储
  getToken: action(async function (code) {
    // 将code传递给开发者服务器获取token
    const result = await reqLogin(code)
    // 本地存储token
    setStorage('token', result.data.token)
    // 将token存储到用户仓库中
    this.token = result.data.token
  }),
  // 获取用户信息并存储
  getUserInfo: action(async function () {
    const result = await reqUserInfo()
    // 将用户信息存储到本地
    setStorage('userInfo', result.data)
    // 将用户信息存储到仓库中
    this.userInfo = result.data
  })
})
